SlideShare a Scribd company logo
1 of 29
Download to read offline
VPとSPIDERを使った
   MySQL運用

        2010/12/20
           kamipo
          pixiv Inc.
みなさん
MySQL使ってますか?
SPIDERって
知ってますか?
今日の話

ShardingだけじゃないVP & SPIDER
(Not Only Sharding)

VP & SPIDERを運用ツールとして使う
(ホスト間テーブル移動)
自己紹介
自己紹介

上薗 竜太 (kamipo)
  MySQL / Perl
IRC
  #mysql-casual@freenode
  #perl-casual@freenode
Advent Calendar 2010
  MySQL Casual Advent Calendar 2010
  casual - JPerl Advent Calendar 2010
 About VP & SPIDER

MySQLのストレージエンジンプラグイン 

VPはカラムごとにテーブルを垂直分割

SPIDERはテーブルを複数ホストに水平分割

斯波さんが作ってる
wild-growth-ja.blogspot.com
launchpad.net/spiderformysql
launchpad.net/vpformysql
今日の話

ShardingだけじゃないVP & SPIDER
(Not Only Sharding)

VP & SPIDERを運用ツールとして使う
(ホスト間テーブル移動)
 VPのデータコピー用UDF



 vp_copy_tables()
 VPのデータコピー用UDF
CREATE TABLE t1 (
a int(10) unsigned NOT NULL PRIMARY KEY,
b int(10) unsigned NOT NULL
) ENGINE=MyISAM;

SELECT * FROM t1;
+---+----+
|a|b|
+---+----+
| 1 | 10 |
| 2 | 20 |
| 3 | 30 |
| 4 | 40 |
+---+----+
 VPのデータコピー用UDF
CREATE TABLE t2 (
a int(10) unsigned NOT NULL PRIMARY KEY,
b int(10) unsigned NOT NULL
) ENGINE=InnoDB;

CREATE TABLE t_vp (
a int(10) unsigned NOT NULL PRIMARY KEY,
b int(10) unsigned NOT NULL
) ENGINE=VP CONNECTION 'zru "1", tnl "t1 t2"';

SELECT vp_copy_tables('t_vp', 't1', 't2');
 SPIDERテーブルを作る
CREATE TABLE t_spd (
a int(10) unsigned NOT NULL PRIMARY KEY,
b int(10) unsigned NOT NULL
) ENGINE=SPIDER
CONNECTION 'host "db002", user "spider", tbl "t1"';
 VPとSPIDERを組み合わせる
CREATE TABLE t_vp (
a int(10) unsigned NOT NULL PRIMARY KEY,
b int(10) unsigned NOT NULL
) ENGINE=VP CONNECTION 'zru "1", tnl "t1 t_spd"';

SELECT vp_copy_tables('t_vp', 't1', 't_spd');
 ホスト間テーブル移動ができる

VPとSPIDERを使って任意のテーブルを
別ホストに移行する
http://d.hatena.ne.
jp/kamipo/20100909/1284052005

さっきの手順をスクリプトにしました
 スクリプト実行例
$ mygrate_to --host new-db-host -u kamipo -d new_db table1

CREATE TABLE `table1_new` LIKE `table1`;
ALTER TABLE `table1_new` ENGINE SPIDER
CONNECTION 'host "new-db-host", user "kamipo", database "ne
"table1"';
CREATE TABLE `table1_dummy` LIKE `table1`;
CREATE TABLE `table1_vp` LIKE `table1`;
ALTER TABLE `table1_vp` ENGINE VP
CONNECTION 'zru "1", tnl "table1_dummy table1_new"';
RENAME TABLE
`table1_dummy` TO `table1_useless`,
`table1` TO `table1_dummy`,
`table1_vp` TO `table1`;
SELECT vp_copy_tables('table1', 'table1_dummy', 'table1_new');
RENAME TABLE
`table1` TO `table1_vp`,
やってること

移行先を参照するSPIDERテーブルを作る

VPで移行元テーブルとSPIDERを束ねる

vp_copy_tables()でデータコピー

SPIDERテーブルを残してVPと
移行元テーブルを削除
イメージ図
イメージ図
イメージ図
イメージ図
 とても



簡単ですね
これを応用すると
イメージ図
 とても



簡単ですね
 VPで気をつけたいこと

PRIMARY KEYがないとvp_copy_tables()は
使えない

COMMENTは60文字までしか書けないので
CONNECTIONを併用する
(MySQL 5.5では気にしなくて大丈夫)
 SPIDERで気をつけたいこと

XAトランザクションサポートをOFFに
(spider_support_xa=0)

データノードにはできるだけ最新のMySQL
(5.1 >=)を使おう
 MySQL 5.0を使っていると…

いろんなクエリがエラー(になったりする)

REPLACE ~

INSERT ~ ON DUPLICATE KEY UPDATE ~

UPDATE ~ WHERE id = ?
(MySQL 5.5対応版で修正される予定)
まとめ

ShardingだけじゃないVP & SPIDER
(Not Only Sharding)

VP & SPIDERを運用ツールとして使う
(ホスト間テーブル移動)

とても簡単ですね
Enjoy !!



    ご清聴 
ありがとうございました
       
       
       

More Related Content

What's hot

My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1
Makoto Haruyama
 
Introduction to workqueue
Introduction to workqueueIntroduction to workqueue
Introduction to workqueue
yshigeru
 
Sfstudy02 team UKETSUKE
Sfstudy02 team UKETSUKESfstudy02 team UKETSUKE
Sfstudy02 team UKETSUKE
mamoru tateoka
 
WebAppDev勉強会 #2 at cafe? IKAGAWA DO
WebAppDev勉強会 #2 at cafe? IKAGAWA DOWebAppDev勉強会 #2 at cafe? IKAGAWA DO
WebAppDev勉強会 #2 at cafe? IKAGAWA DO
Kohei Noda
 

What's hot (20)

JavaScript祭in ForPro nuxt.jsとSSRことはじめ
JavaScript祭in ForPro nuxt.jsとSSRことはじめJavaScript祭in ForPro nuxt.jsとSSRことはじめ
JavaScript祭in ForPro nuxt.jsとSSRことはじめ
 
20120317 IT系勉強会 in 神戸
20120317 IT系勉強会 in 神戸20120317 IT系勉強会 in 神戸
20120317 IT系勉強会 in 神戸
 
My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1My sql casual_in_fukuoka_vol1
My sql casual_in_fukuoka_vol1
 
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~Rが苦手な人にもRを使って頂くために~RcommanderとRook~
Rが苦手な人にもRを使って頂くために~RcommanderとRook~
 
Introduction to workqueue
Introduction to workqueueIntroduction to workqueue
Introduction to workqueue
 
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
サーバーが完膚なきまでに死んでもMySQLのデータを失わないための表技
 
Handlerさんコンニチワ
HandlerさんコンニチワHandlerさんコンニチワ
Handlerさんコンニチワ
 
Deep Dive into Modules
Deep Dive into ModulesDeep Dive into Modules
Deep Dive into Modules
 
Rancherで簡単に作るk8s環境 Kubernetes meetup tokyo #4 LT kubernetes on rancher
Rancherで簡単に作るk8s環境 Kubernetes meetup tokyo #4 LT kubernetes on rancherRancherで簡単に作るk8s環境 Kubernetes meetup tokyo #4 LT kubernetes on rancher
Rancherで簡単に作るk8s環境 Kubernetes meetup tokyo #4 LT kubernetes on rancher
 
Sfstudy02 team UKETSUKE
Sfstudy02 team UKETSUKESfstudy02 team UKETSUKE
Sfstudy02 team UKETSUKE
 
WebAppDev勉強会 #2 at cafe? IKAGAWA DO
WebAppDev勉強会 #2 at cafe? IKAGAWA DOWebAppDev勉強会 #2 at cafe? IKAGAWA DO
WebAppDev勉強会 #2 at cafe? IKAGAWA DO
 
意識の低い自動化
意識の低い自動化意識の低い自動化
意識の低い自動化
 
Rancher jp1周年振り返り anniversary meetup slide summary
Rancher jp1周年振り返り anniversary meetup slide summaryRancher jp1周年振り返り anniversary meetup slide summary
Rancher jp1周年振り返り anniversary meetup slide summary
 
GitLab Meetup Tokyo#2 Rancher gitlab container registry
GitLab Meetup Tokyo#2 Rancher gitlab container registryGitLab Meetup Tokyo#2 Rancher gitlab container registry
GitLab Meetup Tokyo#2 Rancher gitlab container registry
 
MySQLの全文検索に関するあれやこれや
MySQLの全文検索に関するあれやこれやMySQLの全文検索に関するあれやこれや
MySQLの全文検索に関するあれやこれや
 
20171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-1020171106 ntt-tx-postgre sql-10
20171106 ntt-tx-postgre sql-10
 
20171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-1020171028 osc-nagaoka-postgre sql-10
20171028 osc-nagaoka-postgre sql-10
 
20171103 pg con-jp-lt-plpgsql
20171103 pg con-jp-lt-plpgsql20171103 pg con-jp-lt-plpgsql
20171103 pg con-jp-lt-plpgsql
 
カジュアルにバックアップ - MySQL Casual Talks 福岡
カジュアルにバックアップ - MySQL Casual Talks 福岡カジュアルにバックアップ - MySQL Casual Talks 福岡
カジュアルにバックアップ - MySQL Casual Talks 福岡
 
MySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLはMySQL 5.7の次のMySQLは
MySQL 5.7の次のMySQLは
 

Viewers also liked

MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
Yoshinori Matsunobu
 
pixivのインフラを支える技術
pixivのインフラを支える技術pixivのインフラを支える技術
pixivのインフラを支える技術
Ryuta Kamizono
 

Viewers also liked (18)

徐鑑 音泭(簡版)
徐鑑 音泭(簡版)徐鑑 音泭(簡版)
徐鑑 音泭(簡版)
 
Devsの常識、DBAは非常識
Devsの常識、DBAは非常識Devsの常識、DBAは非常識
Devsの常識、DBAは非常識
 
ペパボ de MySQL
ペパボ de MySQLペパボ de MySQL
ペパボ de MySQL
 
今更聞けないストリーム処理のあれとかこれ
今更聞けないストリーム処理のあれとかこれ今更聞けないストリーム処理のあれとかこれ
今更聞けないストリーム処理のあれとかこれ
 
MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話MHA for MySQLとDeNAのオープンソースの話
MHA for MySQLとDeNAのオープンソースの話
 
pixivのインフラを支える技術
pixivのインフラを支える技術pixivのインフラを支える技術
pixivのインフラを支える技術
 
Mackerel & Norikra mackerel meetup #4 LT
Mackerel & Norikra mackerel meetup #4 LTMackerel & Norikra mackerel meetup #4 LT
Mackerel & Norikra mackerel meetup #4 LT
 
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LTNorikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
Norikraで作るPHPの例外検知システム YAPC::Asia Tokyo 2015 LT
 
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LT
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LTGazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LT
Gazelle & CPAN modules for performance. Shibuya.pm Tech Talk #17 LT
 
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
メルカリのデータベース戦略 / PHPとMySQLの怖い話 MyNA会2015年8月
 
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015ISUCONの勝ち方 YAPC::Asia Tokyo 2015
ISUCONの勝ち方 YAPC::Asia Tokyo 2015
 
Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015Rhebok, High Performance Rack Handler / Rubykaigi 2015
Rhebok, High Performance Rack Handler / Rubykaigi 2015
 
MyRocks Deep Dive
MyRocks Deep DiveMyRocks Deep Dive
MyRocks Deep Dive
 
Big Master Data PHP BLT #1
Big Master Data PHP BLT #1Big Master Data PHP BLT #1
Big Master Data PHP BLT #1
 
メルカリでのNorikraの活用、 Mackerelを添えて
メルカリでのNorikraの活用、 Mackerelを添えてメルカリでのNorikraの活用、 Mackerelを添えて
メルカリでのNorikraの活用、 Mackerelを添えて
 
MySQLerの7つ道具 plus
MySQLerの7つ道具 plusMySQLerの7つ道具 plus
MySQLerの7つ道具 plus
 
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
私は如何にして詳解 MySQL 5.7を執筆するに至ったか私は如何にして詳解 MySQL 5.7を執筆するに至ったか
私は如何にして詳解 MySQL 5.7を執筆するに至ったか
 
MySQLアンチパターン
MySQLアンチパターンMySQLアンチパターン
MySQLアンチパターン
 

Similar to VPとSPIDERを使ったMySQL運用

T sql の parse と generator
T sql の parse と generatorT sql の parse と generator
T sql の parse と generator
Oda Shinsuke
 
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
Takuro Iizuka
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
Ryosuke IWANAGA
 
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
Daisuke Ikeda
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
Takayoshi Tanaka
 

Similar to VPとSPIDERを使ったMySQL運用 (20)

Spiderストレージエンジンのご紹介
Spiderストレージエンジンのご紹介Spiderストレージエンジンのご紹介
Spiderストレージエンジンのご紹介
 
MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術MySQLを割と一人で300台管理する技術
MySQLを割と一人で300台管理する技術
 
20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!20140612_Docker上でCloudStackを動かしてみる!!
20140612_Docker上でCloudStackを動かしてみる!!
 
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
第20回CloudStackユーザ会_ApacheCloudStack4.4新機能紹介
 
Puppet on AWS
Puppet on AWSPuppet on AWS
Puppet on AWS
 
T sql の parse と generator
T sql の parse と generatorT sql の parse と generator
T sql の parse と generator
 
Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介
Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介
Spiderストレージエンジンの使い方と利用事例 他ストレージエンジンの紹介
 
MySQL 5.5 Update #denatech
MySQL 5.5 Update #denatechMySQL 5.5 Update #denatech
MySQL 5.5 Update #denatech
 
ICHIGEKI-MT 2015/03/14
ICHIGEKI-MT 2015/03/14ICHIGEKI-MT 2015/03/14
ICHIGEKI-MT 2015/03/14
 
TripleOの光と闇
TripleOの光と闇TripleOの光と闇
TripleOの光と闇
 
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
~Dockerfileの開発を劇的に楽にする~ Dockerfile開発環境 EDGE
 
関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU関東GPGPU勉強会 LLVM meets GPU
関東GPGPU勉強会 LLVM meets GPU
 
Maatkitの紹介
Maatkitの紹介Maatkitの紹介
Maatkitの紹介
 
Oracle APEX もくもく会 プラグインを作ろう
Oracle APEX もくもく会 プラグインを作ろうOracle APEX もくもく会 プラグインを作ろう
Oracle APEX もくもく会 プラグインを作ろう
 
第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会第1回 一撃サーバー構築シェルスクリプト勉強会
第1回 一撃サーバー構築シェルスクリプト勉強会
 
tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1tcpdump & xtrabackup @ MySQL Casual Talks #1
tcpdump & xtrabackup @ MySQL Casual Talks #1
 
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
クラウド環境向けZabbixカスタマイズ紹介(第5回Zabbix勉強会)
 
13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs13016 n分で作るtype scriptでnodejs
13016 n分で作るtype scriptでnodejs
 
Hbstudy41 auto scaling
Hbstudy41 auto scalingHbstudy41 auto scaling
Hbstudy41 auto scaling
 
無駄にNeo4jを使っている日々
無駄にNeo4jを使っている日々無駄にNeo4jを使っている日々
無駄にNeo4jを使っている日々
 

Recently uploaded

Recently uploaded (11)

LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 

VPとSPIDERを使ったMySQL運用